#ifndef OPENGLRENDERERAPI_H
#define OPENGLRENDERERAPI_H

#include "Renderer/rendererAPI.h"

namespace CC {

	class OpenGLRendererAPI : public RendererAPI
	{
	public:
		virtual void Init() override;
		virtual void SetViewport(uint32_t x, uint32_t y, uint32_t width, uint32_t height) override;

		virtual void SetClearColor(const glm::vec4& color) override;
		virtual void Clear() override;
		virtual void Clear(CapEnum bit) override;
		virtual void ClearDepth() override;

		virtual void DrawIndexed(const VertexArray* vertexArray, uint32_t indexCount = 0, DisplayModesEnum mode = DisplayModesEnum::DisplayModesEnum_TRIANGLES) override;
		virtual void DrawArrays(const VertexArray* vertexArray, uint32_t count = 0, DisplayModesEnum mode = DisplayModesEnum::DisplayModesEnum_TRIANGLES) override;
		virtual void DrawLines(const VertexArray* vertexArray, uint32_t vertexCount) override;
		
		virtual void SetLineWidth(float width) override;

		virtual void UnBindTexture() override;
		virtual void BindTexture(uint32_t slot, uint32_t ID) override;

		virtual void CullFace(CullFaceEnum type) override;
		virtual void SetEnableState(CapEnum cap, bool enable) override;
		virtual void SetDepthFunc(DepthFuncEnum func) override;
	};


}

#endif
